package org.example.c01函数式编程;

/**
 * 除了四大类函数接口，我们还可以自定义函数接口。
 * <p>
 * 函数式接口非常脆弱：只要某个开发者在该接口中添加一个函数，则该接口就不再是函数式接口进而导致编译失败。
 * 为了克服这种代码层面的脆弱性，并显式说明某个接口是函数式接口，Java 8 提供了特殊的注解 @FunctionalInterface 。
 * 只要带上这个注解，那这个接口就被识别为函数式接口，如果往接口里定义超过一个方法（默认、静态方法除外），
 * 编译器就会报错（不加注解不会），从而避免程序员不小心破坏函数式接口。
 * <p>
 * 创建人：yuanwl <br>
 * 创建时间：2018年8月16日 下午8:45:11 <br>
 * <p>
 * 修改人： <br>
 * 修改时间： <br>
 * 修改备注： <br>
 * </p>
 */
@FunctionalInterface
public interface s02自定义函数式接口 {
	void test();

	//默认方法不会破坏函数式接口的定义
	default void defaultMethod() {
	}

	//静态方法不会破坏函数式接口的定义
	static void staticMethod() {

	}

	//多余的普通方法会破坏函数式接口，如果没有上面的注解，不会报错，但是这个接口就变成普通接口了
//	void test2();

}
